package eu.hellek.gba.client.pub.common; import com.google.gwt.maps.client.base.HasLatLng; import com.google.gwt.maps.client.base.HasPoint; import com.google.gwt.maps.client.overlay.OverlayView; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.ui.Label; public class StationOverlayView extends OverlayView { private HasLatLng latlng; private Label div; private int minimumZoom; public StationOverlayView(String text, HasLatLng pos, String color, int minimumZoom) { super(); this.latlng = pos; div = new Label("° " + text); div.setStyleName("stationLabel"); div.getElement().setAttribute("style", "color:" + color + ";"); div.setVisible(false); this.minimumZoom = minimumZoom; } @Override public void draw() { if(this.getMap().getZoom() >= minimumZoom) { HasPoint p = this.getProjection().fromLatLngToDivPixel(latlng); int x = (int)Math.round(p.getX()) - 2; int y = (int)Math.round(p.getY()) - 2; //GWT.log("should display station label " + title + " at " + x + ", " + y); DOM.setStyleAttribute(div.getElement(), "left", x+"px"); DOM.setStyleAttribute(div.getElement(), "top", y+"px"); div.setVisible(true); } else { div.setVisible(false); } } @Override public void onAdd() { this.getPanes().getOverlayImage().appendChild(div.getElement()); } @Override public void onRemove() { div.setVisible(false); // this.getPanes().getOverlayImage().removeChild(div.getElement()); div.getElement().removeFromParent(); } }